Skip to content

Redesign home and announcements - #116

Merged
Scott1UP merged 22 commits into
mainfrom
redesign-home-announcements
Aug 26, 2026
Merged

Redesign home and announcements#116
Scott1UP merged 22 commits into
mainfrom
redesign-home-announcements

Conversation

@Scott1UP

Copy link
Copy Markdown
Collaborator

No description provided.

Scott1UP and others added 16 commits August 25, 2026 10:52
- scripts/shot.mjs: checked-in Playwright screenshot harness (required
  --port, standard breakpoints, mobile emulation under 768px)
- event-app verify skill (new) + devcon verify skill updated to use the
  shared harness instead of ad-hoc scratch scripts
- figma-impl skill: spec-table-first Figma implementation workflow
- playwright-core added as root devDependency (driver only, no browser
  download; uses the cached ms-playwright headless shell)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gn assets

- Chloe-Regular.otf (from devcon site) self-hosted via next/font/local
- Poppins devanagari subset for the home greeting
- public/home/: travel-guide card, tickets banner key art, footer art fill
  (Figma exports / devcon-site images, optimized to webp)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… footer art)

- Menu.tsx → components/home/ (Home, Greeting, FeaturedCard, HomeFooterArt)
- Greeting rotates 4 variants every 6s (AnimatePresence slide-up/fade,
  reduced-motion aware, fixed-height container against layout shift)
- Featured travel-guide card linking to devcon.org/travel-guide
- Tickets: signed-out key-art sign-in banner; signed-in cards 2-up on desktop
- Devcon 8 India sign-off: real SVG text in Chloe, image-masked with the
  Figma inner shadow (responsive 1-line desktop / 2-line mobile)
- Desktop content escapes .section to the 1312px box (Ticket.tsx pattern)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- AnnouncementCard: inbox + home variants (date/unread dot, generic
  Open →/↗ CTA), long-form relative times
- Home preview 3-up grid with View all; Highlights/PushOptIn restyled
- Inbox: wider desktop column, uppercase day labels (Today/Yesterday kept)
- Read-state snapshot semantics untouched

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Footer art: stretch letter-spacing only, never glyph outlines
  (lengthAdjust default), resized to match; fixes distorted letterforms
- Tickets banner: art nudged down on desktop, moon to top-left on mobile,
  mobile bottom legibility gradient from Figma (5017:5545), p-5 mobile
- Interactive cards (featured, highlights, linked announcements, banner):
  scale 1.03 hover / 0.97 press, 150ms ease-out, shadow-sm on hover;
  highlight image zoom removed; unlinked cards stay inert
- Highlights carousel: SwipeToScroll edge fades (right at rest, left when
  scrolled) as on the speakers topic filters
- Greeting: larger slide travel (28px in/out); mobile auth controls moved
  into the app header as icon buttons via the #header-actions portal;
  user-cog icon now dc-purple

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Highlights: pad inside the scroll container (outer -m-2 re-aligns) so
  hover scale + shadow aren't clipped by the scroller
- Tickets banner: hover shadow-lg; desktop art re-nudged to object-y 68%
  (60% overshot); Sign in tag brightens (white/20→45) on banner hover
- Featured card: arrow chip brightens (white/20→45) on card hover
- Announcement CTAs underline on linked-card hover
- Greeting: 30ms entry delay so the exit clears further before landing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… scale

Card no longer scales on hover/press; the art pans in gently (scale-105,
500ms ease-out) while the shadow-lg and Sign-in tag transitions stay.
Also carries Scott's object-y 88% desktop framing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Announcements page cards no longer scale/shadow on hover or press —
  purple border + CTA underline remain. Home preview cards keep the full
  scale treatment.
- HomeFooterArt (Devcon 8 India lockup) removed from the page for a later
  design revisit; component file kept.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Tickets: loading state (incl. !hasInitialized) checked before !user, so
  signed-in cold loads and offline users never see the sign-in banner over
  their cached tickets; failed revalidation keeps the cached grid with a
  quiet notice instead of replacing QR codes with an error; signed-out
  'Get tickets ↗' purchase path restored; solid bg fallback behind banner
- resolveAnnouncementLink helper: scheme-less Notion URLs (devcon.org/x)
  become https:// externals; protocol-relative // no longer routes in-app;
  used by announcement cards and highlights
- Highlights edge fades reimplemented app-side (capture-phase scroll
  listener + mask on the wrapper): SwipeToScroll's built-in indicators
  never re-sync on scroll, so the right fade latched and left never showed
- relativeTime: pluralize from displayed value; floor units

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Devanagari served by a dedicated 800-weight loader (~39KB) instead of
  the subset across all five Poppins weights (~192KB precached); greeting
  stacks latin Poppins first, devanagari fallback per unicode-range
- Chloe loader removed and Chloe-Regular.otf + footer-art-fill.webp
  deleted (parked HomeFooterArt documents how to restore from history)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Greeting: drop the truncated नमस्त variant (3 variants); no auto-rotation
  under prefers-reduced-motion (WCAG 2.2.2); auth circles padded to 44px
  hit areas
- routing Link native branch: spread rest props so aria-label survives on
  the Capacitor div, activate on Space as well as Enter
- focus-visible outline on interactive cards; sr-only h1 on Home

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
font-bold + leading-[28.8px] + tracking-[-0.5px] (was extrabold/26px/no
tracking) across Featured, Announcements, Highlights, Your tickets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Scott1UP
Scott1UP requested a review from didierkrux August 25, 2026 13:21
@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@Scott1UP Scott1UP changed the title Redesign home announcements Redesign home and announcements Aug 25, 2026
@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

netlify Bot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for devcon-event-app ready!

Name Link
🔨 Latest commit b84893a
🔍 Latest deploy log https://app.netlify.com/projects/devcon-event-app/deploys/6a8de6088c47a0000827a567
😎 Deploy Preview https://deploy-preview-116--devcon-event-app.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@socket-security

socket-security Bot commented Aug 25, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​playwright-core@​1.62.1100100799980

View full report

…tCard link handling

- Adjusted type-checking instructions to clarify that both `pnpm exec tsc --noEmit` and `pnpm typecheck` should gate on a zero exit code, addressing common errors related to image imports.
- Refactored AnnouncementCard component to replace `url` with `link` for better clarity and consistency in handling links.
- Enhanced `resolveAnnouncementLink` function to improve input normalization and security by allowing only specific schemes and handling scheme-less URLs appropriately.
…to dynamically display highlights. Added 'featured' property to announcements for home-screen hero selection. Updated related types and hooks for improved announcement handling.
- Added guidelines for handling remote images to ensure they are served from Supabase Storage and are cacheable offline.
- Updated service worker configuration to improve caching of cross-origin images, preventing opaque responses that could lead to quota issues.
- Implemented `crossOrigin="anonymous"` for image elements in Avatar, HighlightsCarousel, and FeaturedCard components to ensure proper caching behavior.
- Expanded CacheWarmer functionality to include warming of images associated with announcements, ensuring a complete offline experience.
…ience

- Added functionality to prevent broken images by utilizing `useRetryOnReconnect` in Avatar, HighlightsCarousel, and FeaturedCard components.
- Images that fail to load now fall back to placeholders and automatically retry when the connection is restored.
- Updated image rendering logic to ensure a seamless user experience during offline scenarios.
- Updated `useWarmImages` to prioritize image loading based on importance, ensuring critical assets are fetched first.
- Enhanced `CacheWarmer` to include static assets and improve the warm list for offline scenarios.
- Integrated `useRetryOnReconnect` in multiple components to handle image loading failures and provide fallback options.
- Adjusted `next.config.ts` to ensure proper precaching of essential assets for offline use.

@didierkrux didierkrux left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work on the redesign 👍

3 things added on top:

1. Small fixes from review

  • Announcement links: only real web links (http, https, mailto) are accepted now. Before, anything pasted into the Notion link column was trusted, including javascript: links that would run code when tapped.
  • Cards only show the arrow/CTA when the link actually works.
  • Fixed the typecheck note in the verify skill. Those TS2307 errors you saw aren't real. They just mean a fresh clone hasn't generated next-env.d.ts yet. Run pnpm dev once and typecheck is clean.

2. The Featured card is now editable in Notion

It used to be hardcoded, so changing the biggest card on the home screen needed a deploy. Now it's just a highlight with a Featured checkbox in the same Notion DB:

  • Tick one highlight → it becomes the Featured card
  • Tick none → the Featured section disappears
  • The featured one is hidden from the carousel below, so it doesn't appear twice
  • Links to app pages (like /schedule) now open in the app instead of a new tab

3. Images now work offline

Two problems: avatars and highlight images were never being saved for offline use, and the app only saves images you've actually scrolled past. So the speakers page worked offline but showed empty circles.

Both fixed. The app now quietly downloads images in the background while you're online after the first load, so they're ready later:

  • Only downloads what's new, so reopening the app costs nothing
  • Avatars go last, since there are 645 of them and they matter least
  • If an image fails, you get a placeholder instead of a broken image, and it retries when the connection comes back

Rules for adding new images are written up in event-app/CLAUDE.md.

@Scott1UP

Copy link
Copy Markdown
Collaborator Author

Thanks for review @didierkrux — and thanks for setting up the Notion pipeline for Featured cards — much cleaner UX!

@Scott1UP
Scott1UP merged commit d2d80ae into main Aug 26, 2026
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants